<?php
namespace Admin\Controller;
use Think\Controller;
class AdminController extends CommonController {

    public function login(){
        if(IS_POST){
            // // 判断验证码为false
            // $verify = new \Think\Verify();
            // if(!$verify->check(I('post.code'))){
            //     $this->error('验证码错误','',1);die;
            // }

            unset($_POST['code']);

            // 把表单提交的数据拿到数据库里查找
            $data = $this->Model->relation(true)->where(I('post.'))->find();
            // echo $this->Model->getLastSql();die;

            if(!empty($data)){
                $data['group_access'] = explode(',',$data['group_access'][0]['rules']);//把用户拥有的权限转换成数组
                session('admin_user',$data);//登录时把用户数据存到session里
                redirect(U('index/index'));die;
            }
        }

        $this->display();

    }

    /**
     * 注销登录
     *
     * @return void
     * @author
     **/
    function logout()
    {

        session(null); // 清空当前的session

        redirect(U('Admin/admin/login'));die;

    }

    /**
     * 员工列表
     *
     * @return void
     * @author
     **/
    function lists()
    {
        $count = $this->Model->count();// 查询满足要求的总记录数
        $Page = new \Think\Page($count,5);// 实例化分页类 传入总记录数和每页显示的记录数(25)
        $Page->setConfig('prev','上一页');
        $Page->setConfig('next','下一页');
        $Page->setConfig('first','首页');
        $Page->setConfig('last','最后一页');
        $show = $Page->show();// 分页显示输出// 进行分页数据查询 注意limit方法的参数要使用Page类的属性

        $list = $this->Model->order('id desc')->limit($Page->firstRow.','.$Page->listRows)->select();

        $this->assign('list',$list);// 赋值数据集
        $this->assign('page',$show);// 赋值分页输出

        $this->display();
    }

    /**
     * 添加员工
     *
     * @return void
     * @author
     **/
    function add()
    {

        if(IS_POST){
            //优化不传图片时的情形
            $_POST['avatar'] = !empty($_SESSION['avatar'])?$_SESSION['avatar']:'';

            unset($_POST['cpassword']);
            unset($_POST['group_id']);
            unset($_POST['code']);

            $id = $this->Model->relation(true)->add(I('post.'));//把表单数据提交数据库

            if($id>0){
                //session里的图片路径添加到数据库后要清空session，否则出现下一次添加没上传图片就自动生成了图片
                unset($_SESSION['avatar']);

                $this->success('添加成功',U('Admin/lists',2));die;
            }else{
                $this->error('添加失败','',2);die;
            }
        }


        $group = D('group')->select();//查询角色表的信息

        $this->assign('group',$group);//把角色表的信息返回到页面

        $this->display();
    }

    /**
     * 取得验证码
     *
     * @return void
     * @author
     **/
    function getCode()
    {
        $Verify = new \Think\Verify();
        $Verify->fontSize = 18;
        $Verify->length   = 4;
        $Verify->imageW   = 120;
        $Verify->imageH   = 32;
        ob_clean();
        $Verify->entry();
    }

    // 图片上传
    public function uploadOne(){
        $upload = new \Think\Upload();// 实例化上传类
        $upload->maxSize   =     3145728 ;// 设置附件上传大小
        $upload->exts      =     array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
        $upload->savePath  =      'Public/Uploads/'; // 设置附件上传目录

        // 上传文件
        $info   =   $upload->uploadOne($_FILES['file']);

        if(!$info) {
            // 上传错误提示错误信息
            $this->error($upload->getError());
        }else{
            // 上传成功
            // 上传头像路径组装
            return 'Uploads/'.$info['savepath'].$info['savename'];
        }
    }

    /**
     * 员工编辑
     *
     * @return void
     * @author
     **/
    function edit()
    {

        if(IS_POST){

            $id = I('get.id');

            $_POST['id'] = $id;

            // print_r(I('post.'));die;

            // 把角色id独立取出来
            $data['group_id'] = I('post.group_id');

            // 删除角色id字段的值
            unset($_POST['group_id']);


            // 修改员工数据
            $newdata = $this->Model->relation(true)->where("id = $id")->save(I('post.'));

            if($newdata>=0){
                $this->success('员工信息修改成功',U('admin/admin/lists'),2);die;
            }else{
                $this->error('员工信息修改失败','',2);die;
            }

        }

        $data = $this->Model->relation(true)->getById(I('get.id'));//通过I方法获取到id

        $group = D('group')->select();//查询角色表的信息

        $this->assign('group',$group);//把角色表的信息返回到页面
        $this->assign('data',$data);//再把数据输出到页面
        $this->display();
    }

    /**
     * 头像删除
     *
     * @return void
     * @author
     **/
    function del_avatar()
    {
        // 先查询要删除的数据
        $data = D('admin')->getById(I('get.id'));

        $map['id'] = I('get.id');
        $file['avatar'] = '';//清空数据库中头像字段的内容
        $id = D('admin')->where($map)->save($file);

        if($id>0){
            //删除制定路径下的图片
            unlink('./'.$data['avatar']);
            $this->success('头像删除成功',U('admin/admin/edit/id/'.$data['id']),2);die;
        }else{
            $this->error('头像删除成功','',2);die;
        }

    }
}